<?php
/*
 * @Description: 封装分页函数
 * @Author: Zhy
 * @Date: 2024-06-20 10:29:55
 * @LastEditTime: 2024-06-25 14:26:22
 * @LastEditors: Zhy
 */

/**
 * @description:
 * @Author: Zhy
 * @Date: 2024-06-20 10:32:05
 * @return {*}
 * @param {总记录数} $rowCount
 * @param {能够显示在页面上的最大页码数} $maxnum
 * @param {每页能够显示的记录数} $rowsPerPage
 * @param {生成的页码字符串} $url
 */
function page($rowCount, $maxnum, $rowsPerPage, $url) {
    // 接收当前的页码数
    $pageNum = isset($_GET['pageNum']) ? $_GET['pageNum'] : 1;
    // 计算总页数
    $pages = ceil($rowCount / $rowsPerPage);
    // 拼接字符串
    $strPage = '';
    // 首页
    $strPage.= "<a href='{$url}?pageNum=1'>首页</a> ";
    // 上一页
    if ($pageNum != 1) {
        $strPage.= "<a href='{$url}?pageNum=".($pageNum-1)."' class=\"prev\"><span class=\"iconfont icon-zuofanye\"></span>上一页</a> ";
    }
    // 确定显示的第一个页码 $startNum 的值
    if ($pageNum <= 3) {
        $startNum = 1;
    } else {
        $startNum = $pageNum - 2;
    }

    // 确定 $startNum 的最大值
    if ($startNum + $maxnum > $pages) {
        $startNum = $pages - $maxnum + 1;
    }

    // 防止 $startNum 的值小于 1
    if ($startNum < 1) {
        $startNum = 1;
    }

    // 确定显示的最后一个页码 $endNum 的值
    $endNum = $startNum + $maxnum - 1;

    // 防止 $endNum 的值大于 $pages
    if ($endNum > $pages) {
        $endNum = $pages;
    }

    // 页码显示
    for ($i = $startNum; $i <= $endNum; $i++) {
        if ($i == $pageNum) {
            $strPage .= "<a href='{$url}?pageNum={$i}'><span class=\"current\">{$i}</span></a> ";
        } else {
            $strPage .= "<a href='{$url}?pageNum={$i}'>{$i}</a> ";
        }
    }

    // 下一页
    $nextNum = $pageNum + 1;
    if ($pageNum != $pages) {
        $strPage .= "<a href='{$url}?pageNum=$nextNum' class=\"next\">下一页<span class=\"iconfont icon-youfanye\"></span></a> ";
    }

    // 尾页
    $strPage .= "<a href='{$url}?pageNum=$pages'>尾页</a> ";

    // 总页数
    $strPage .= "共 $pages 页";

    return $strPage;
}

